package javacroft.view.GUI;

import java.awt.BorderLayout;
import java.awt.Dimension;
import java.awt.FlowLayout;
import java.awt.GridBagConstraints;
import java.awt.GridBagLayout;
import java.awt.Insets;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.logging.Level;
import java.util.logging.Logger;
import javacroft.view.MyPanel;

import javax.swing.JButton;
import javax.swing.JDialog;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JFormattedTextField;
import javax.swing.JOptionPane;

/**
 * Classe qui etand la classe JDialog. Ces boites de dialogue seront affichées lorsqu'un utilisaetuer veut donner des points jury.
 * @author julien
 */
public class MyDialog extends JDialog implements ActionListener
{

   private JLabel labelPJ;
   private Float myNombre;
   private JurySemestre parent;
   int indexEtud;
   JFormattedTextField pj = new JFormattedTextField();
   JButton valider = new JButton("Valider");
   JButton annuler = new JButton("Annuler");

   /**
    * Constructeur de la classe pour un point Jury Semestre
    * @param parent fenetre qui a créé cette boite de dialogue.
    * @param modal booleen qui indique si
    * @param unnombre nombre a affiché au départ dans le champ de texte
    * @param indexEtud numero de l'etudiant pour lequel on veut donner des points jury
    */
   public MyDialog(JurySemestre parent, boolean modal, float unnombre, int indexEtud)
   {
      super(parent, "Point Jury Semestre", modal);
      myNombre = unnombre;
      this.parent = parent;
      this.indexEtud = indexEtud;
      this.setSize(300, 200);
      this.setLocationRelativeTo(null);
      this.setResizable(false);
      labelPJ = new JLabel("Nombre de points Jury ?");

      pj.setDocument(new NumericDocument(2, 2));
      pj.setText("" + myNombre);
      pj.requestFocus();
      pj.setSelectionStart(0);
      pj.setSelectionEnd(pj.getText().length());
      pj.requestFocus();
      labelPJ.setPreferredSize(new Dimension(200, 25));
      pj.setPreferredSize(new Dimension(70, 25));

      valider.setActionCommand("Valider");
      valider.addActionListener(this);

      annuler.setActionCommand("Annuler");
      annuler.addActionListener(this);

      MyPanel content = new MyPanel("ecran8.jpg", 300, 200);
      content.setLayout(new BorderLayout());
      content.setSize(new Dimension(300, 200));
      JPanel interieur = new JPanel();
      interieur.setSize(new Dimension(300, 200));
      interieur.setOpaque(false);
      interieur.setLayout(new GridBagLayout());
      GridBagConstraints gbc = new GridBagConstraints();

      this.add(content);
      content.add(interieur, BorderLayout.CENTER);
      gbc.insets = new Insets(15, 15, 0, 0);
      gbc.gridx = 0;
      gbc.gridx = 0;
      gbc.gridwidth = 2;
      gbc.anchor = GridBagConstraints.CENTER;
      interieur.add(labelPJ, gbc);
      gbc.gridy = 1;
      interieur.add(pj, gbc);
      gbc.gridy = 2;
      gbc.gridwidth = 1;
      interieur.add(valider, gbc);
      gbc.gridx = 1;
      interieur.add(annuler, gbc);

   }

   /**
    * Constructeur de la classe pour un point Jury année
    * @param parent fenetre qui a créé cette boite de dialogue.
    * @param modal booleen qui indique si
    * @param unnombre nombre a affiché au départ dans le champ de texte
    * @param indexEtud numero de l'etudiant pour lequel on veut donner des points jury
    */
   public MyDialog(JuryAnnee parent, boolean modal, float unnombre, int indexEtud)
   {
      super(parent, "Point Jury Année", modal);
      myNombre = unnombre;
      this.indexEtud = indexEtud;
      //this.parent = parent;
      this.setSize(300, 70);
      this.setLocationRelativeTo(null);
      this.setResizable(false);

      labelPJ = new JLabel("Nombre de points Jury ?");

      pj.setDocument(new NumericDocument(2, 2));
      pj.setText("" + myNombre);
      pj.requestFocus();
      pj.setSelectionStart(0);
      pj.setSelectionEnd(pj.getText().length());
      pj.requestFocus();
      labelPJ.setPreferredSize(new Dimension(250, 25));
      pj.setPreferredSize(new Dimension(50, 25));


      JPanel content = new JPanel(new FlowLayout(FlowLayout.LEFT));
      this.add(content);
      content.add(labelPJ);
      content.add(pj);
   }

   public final void display(String message)
   {
      JOptionPane.showMessageDialog(this, message);
   }

   public void actionPerformed(ActionEvent e)
   {
      if (e.getActionCommand().equals("Valider"))
      {
         try
         {
            if (Float.parseFloat(pj.getText().replace(',', '.')) > myNombre)
            {
               display("Vous ne pouvez pas mettre plus de " + myNombre + " points jury");
            }
            else
            {
               String split[] = parent.lesEtudiants[indexEtud][2].getText().split("/");
               parent.lesEtudiants[indexEtud][2].setText(split[0] + "/" + pj.getText());

               parent.myControlleur.setPointJurySemestre(parent.lesEtudiants[indexEtud][0].getText(), parent.lesEtudiants[indexEtud][1].getText(), pj.getText());
               this.setVisible(false);
            }
         }
         catch (Exception ex)
         {
            Logger.getLogger(MyDialog.class.getName()).log(Level.SEVERE, null, ex);
         }


      }
      else
      {
         this.setVisible(false);
      }
   }
}
